//
// Created by denglibin on 19-10-23.
//
/**
 * 创建线程
 * 函数简介:
　　pthread_create是UNIX环境创建线程函数
头文件
　　#include<pthread.h>
函数声明
　　int pthread_create(pthread_t  *restrict tidp, const  pthread_attr_t  *restrict_attr,   void*（*start_rtn)(void*),   void   *restrict   arg);
返回值
　　若成功则返回0，否则返回出错编号
参数
　　第一个参数为指向线程标识符的指针。
　　第二个参数用来设置线程属性。
　　第三个参数是线程运行函数的地址。
　　最后一个参数是运行函数的参数。

 注意
　　在编译时注意加上-lpthread参数，以调用静态链接库。因为pthread并非Linux系统的默认库。
 **/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>

static void * t_fun(void * arg){
    int i = (int)arg;
    printf("thread -- pid = %d, t_pid = %lu, i = %d\n", getpid(), pthread_self(), i);
    return NULL;
}

static int main_(void){
    printf("main -- pid = %d, t_id = %lu\n", getpid(), pthread_self());
    pthread_t ts[3];
    for(int i = 0; i < 3; i++){
        int ret = pthread_create(ts+i, NULL, t_fun, (void *)i); // 创建线程
        if(ret != 0){
            fprintf(stderr, "pthread_create error:%s\n", strerror(ret));
            exit(-1);
        }
    }
    return 0;
}